【新機能】Amazon AuroraでCross-Region Read Replicaが可能になりました!
ウィスキー、シガー、パイプをこよなく愛する大栗です。
本日Amazon AuroraでCross-Region Replicationの構成が可能になりました。MySQLではCross-Region Replicationが出来ましたが、Auroraでも利用可能となります。なお、既存のAuroraクラスタではバージョンを上げて1.6.5以上にする必要がありそうです。
- AWS What's New:Amazon Aurora now supports cross region replication
- AWS Blog:Cross-Region Read Replicas for Amazon RDS for MySQL
Cross-Region Replication?
AWSでは、様々なサービスでリージョンを超えたデータのレプリケーションをサポートしています。今回、Amazon Auroraでも同様に他のリージョンへの継続的レプリケーションがサポートされました。
- RDS
- MySQL:Amazon RDS Cross-Region Read Replicaを試してみた
- Aurora(New!)
- S3:【新機能】S3でCross-Region Replicationが出来るようになりました!
- DynamoDB:Amazon DynamoDB Cross-region Replicationを試してみた
AuroraでRead Replicaを作成する場合は、1つのクラスタの中にReaderを追加するという位置付けになりますが、Cross-Region Replicationでは別リージョンに異なるAuroraクラスタを作成してデータを同期するという形になります。
試してみる
検証する環境
試す環境として、以下のようにAuroraを配置します。
- レプリケーション元:東京リージョン(ap-northeast-1)
- レプリケーション先:バージニア北部(us-east-1)
事前設定
まず、Auroraを東京リージョンで普通に起動します。 そして、Auroraのクラスタパラメータグループを設定します。defaultのグループを設定している場合は別のグループを設定する必要があります。
クラスタパラメータグループのbinlog_format
をOFF
からMIXED
へ設定します。ROW
やSTATEMENT
でも有効になりますが、ドキュメントではMIXED
を推奨しています。
binlog_format
を設定すると、DBクラスターのパラメータグループが再起動の保留中
となります。そのため対象のAuroraを再起動しましょう。再起動しなければメンテナンスウィンドウで再起動されます。
次に対象のAuroraのメニューからクロスリージョンのリードレプリカの作成
を選択します。
設定する内容は、以下のようになっています。
- インスタンスの仕様
- DB インスタンスのクラス
- マルチ AZ 配置
- 設定
- リードレプリカのソース
- DB インスタンス識別子
- DB クラスター識別子
- ネットワーク & セキュリティ
- 送信先リージョン
- 送信先 DB サブネットグループ
- パブリックアクセス可能
- アベイラビリティーゾーン
- フェイルオーバー
- 優先度
- データベースの設定
- データベースのポート
- モニタリング
- 拡張モニタリングを有効にする
- メンテナンス
- マイナーバージョン自動アップグレード
バージニアのRDSのConsoleを確認すると、Auroraが作成中
となります。しばらくすると利用可能
になります。
レプリケーションの動作を確認する
東京リージョンでAuroraにログインします
EC2を立てて東京リージョンのAuroraへログインします。普通にログインできます。
$ mysql -u awsuser -p -h <Auroraエンドポイント> mydb Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 5.6.10-log MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
次にバージニアのAuroraへログインします
ユーザID/パスワードは一緒です。こちらも同じようにログインできます。
$ mysql -uawsuser -p -h <Auroraエンドポイント> mydb Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 31 Server version: 5.6.10 MySQL Community Server (GPL) Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
東京でテーブルを作成します
mysql> create table sample(id int, data varchar(20)); Query OK, 0 rows affected (0.04 sec) mysql> show tables; +----------------+ | Tables_in_mydb | +----------------+ | sample | +----------------+ 1 row in set (0.00 sec)
バージニアでテーブルを確認します
バージニアも同様にテーブルが作成されています。
mysql> show tables; +----------------+ | Tables_in_mydb | +----------------+ | sample | +----------------+ 1 row in set (0.01 sec)
東京でデータを挿入します
mysql> insert into sample(id, data) values(1, 'Ooguri'); Query OK, 1 row affected (0.00 sec) mysql> commit; Query OK, 0 rows affected (0.00 sec) mysql> select * from sample ; +------+--------+ | id | data | +------+--------+ | 1 | Ooguri | +------+--------+ 1 row in set (0.00 sec)
バージニアでデータを確認します
バージニアも同様にデータが入っていることを確認できます。
mysql> select * from sample ; +------+--------+ | id | data | +------+--------+ | 1 | Ooguri | +------+--------+ 1 row in set (0.01 sec)
まとめ
もともとAuroraは3AZへ合計6重化してデータを保持しているため極めて高い堅牢性を有しています。そのためCross-Region Replicationは堅牢性ではなくフェイルオーバー先として可用性を上げることが目的になると感じています。幸い東京にはネットワーク的に近いソウルリージョンやシンガポールリージョンがあるので、現実的な切り替え先が複数あります。いざというときのフェイルオーバー先やワールドワイドでのコンテンツ配信等で利用できると思います。
ただし、注意があります。Amazon Auroraはディスクアクセスを減らすことで全体のスループットを上げるという思想があります。しかしCross-Region Replicationを行うために通常は不要のbinlogをディスクへ書き込む必要が有るためレプリケーション元のWriterのパフォーマンスが落ちる事が想定されます。そのためWriteのキャパシティについては注意が必要となります。